<?php
class ClientsUsersController extends AppController {

	var $name = 'ClientsUsers';
	var $uses = array('ClientsUser','User','Client','Rol','RolsUser','Specialty','SpecialtiesUser','Person','Typodocument','InsurancesUser','Insurance','Recetario','ProductsUser','Product','InsurancesProduct','Money','Plan','Sucursal','SucursalsUser');

    function beforeFilter () {
        parent::beforeFilter();

		// Aplico el Layout segun la Vista o si es AJAX
		if ($this->RequestHandler->isAjax()) {
			$this->layout = 'ajax';
		}else{
			// Cambio la Vista por la del Rol
			$this->layout = strtolower($this->Session->read('VistaActual'));
		}
    }

	
	function _tratamiento(){
	
		$Tratamientos['Dr.']    = 'Doctor';
		$Tratamientos['Dra.']   = 'Doctora';
		$Tratamientos['Lic.']   = 'Licenciada';
		$Tratamientos['Asist.'] = 'Asistente';
		$Tratamientos['Sec.']   = 'Secretaria';

		return $Tratamientos;	
	}
	
	
	
	function index() {

		$this->ClientsUser->recursive = 0;

		$clientsUsers = $this->ClientsUser->find('all', array(
						'conditions' => array(
											'ClientsUser.client_id' => $this->Session->read('ClientesUsuarioLogueado.id'),
											'NOT' => array ('ClientsUser.staterecord_id' => array('2','3'))
										),
						'fields' => array('ClientsUser.id','User.id', 'User.name','User.lastname','Client.id','User.last_login'),
						'order' => array('User.lastname','User.name'),
		) );

		$rolesUsuarios = $this->RolsUser->find('all', array(
						'conditions' => array(
											'RolsUser.client_id' => $this->Session->read('ClientesUsuarioLogueado.id'),
										),
		) );

		$roles = $this->Rol->find('list');

		/*----------------------------------------------------------------------------*/
		/* Proceso los Roles para pasarlo a la Vista								  */
		/*----------------------------------------------------------------------------*/

			foreach($rolesUsuarios as $registro){
				if(!isset($arreglo_roles_usuario[$registro['RolsUser']['user_id']])){
					$arreglo_roles_usuario[$registro['RolsUser']['user_id']] = $roles[$registro['RolsUser']['rol_id']];
				}else{
					$arreglo_roles_usuario[$registro['RolsUser']['user_id']] .= ", ".$roles[$registro['RolsUser']['rol_id']];
				}
			}


		/*----------------------------------------------------------------------------*/

		$this->set('id_cliente', $this->Session->read('ClientesUsuarioLogueado.id'));
		$this->set(compact('roles', 'arreglo_roles_usuario', 'clientsUsers'));


		//Cual es el plan del Cliente? para obtener los maximos posibles
		$this->loadModel('ClientsPlan','Plan');
		$x = $this->ClientsPlan->find('first', array(
						'conditions' => array(
										'ClientsPlan.client_id' => $this->Session->read('ClientesUsuarioLogueado.id'),
										'ClientsPlan.activo'    => 1,
						), 'recursive' => 1

						));

		$Plan = $x['Plan'];
		$Consumos = $this->Consumos();
	
		if( $Consumos['cantidad_de_medicos']>=$Plan['maximo_medicos'] and $Plan['maximo_medicos']>0  and $Consumos['cantidad_de_otros_roles']>=$Plan['maximo_admin'] and $Plan['maximo_admin']>0){
			$this->set('boton_agregar', false);
		} else {
			$this->set('boton_agregar', true);
		}



	}

	function view($id = null) {
		$this->_accede('abm_usuarios');
		if (!$id) {
			$this->Session->setFlash(__('Invalid clients user', true));
			$this->redirect(array('action' => 'index'));
		}
		$this->set('clientsUser', $this->ClientsUser->read(null, $id));
	}

	function add() {
		$this->_accede('abm_usuarios');
		if (!empty($this->data)) {


			$client_id = $this->Session->read('ClientesUsuarioLogueado.id');

			//---------------------------------------------------------------------------
			//                                          Cual es la Sucursal Casa Central?
			//---------------------------------------------------------------------------
			$sql = "select min(id) as sucursal_id, name from sucursals where client_id='$client_id'";
			$xx = $this->Sucursal->query($sql);
			$sucursal_id = $xx[0][0]['sucursal_id'];
			$nombre_sucursal = $xx[0]['sucursals']['name'];
			
		
		/*----------------------------------------------------------------------------*/
		/* Grabo el Usuario															  */
		/*----------------------------------------------------------------------------*/

			$this->User->create();

			$this->User->set(array(
				'username'         => $this->data['User']['username'],
				'password'         => $this->data['User']['password'],
				'name'             => $this->data['User']['name'],
				'lastname'         => $this->data['User']['lastname'],
				'email'            => $this->data['User']['email'],
				'fecha_nacimiento' => $this->data['User']['fecha_nacimiento'],
				'typodocument_id'  => $this->data['User']['typodocument_id'],
				'nro_documento'    => $this->data['User']['nro_documento'],
				'country_id'       => $this->data['User']['country_id'],
				'telefono'         => $this->data['User']['telefono'],
				'tratamiento'      => $this->data['User']['tratamiento'],
				'matricula' 		=> $this->data['User']['matricula'],
			));

			/*----------------------------------------------------------------------------*/
			/* Grabo el nuevo Usuario														*/
			/*----------------------------------------------------------------------------*/

			if($this->User->validates()) { // Si está todo Validado

				if ($this->User->save()) {

					// Obtengo el ID cargado
					$user_id_nuevo = $this->User->id;

					/*----------------------------------------------------------------------------*/
					/*                                           Hago el Upload de la Firma 	  */	
					/*----------------------------------------------------------------------------*/

						if(isset($this->data['User']['foto_firma'])){

							$foto = $this->data['User']['foto_firma'];
							
							if( $foto['size']>0){ 

								// Obtengo la Extension
								$posicion_punto = strrpos($foto['name'],".");
								$extension_firma = substr($foto['name'], 1 + $posicion_punto);

								$NombreArchivo = 'firma-'.$user_id_nuevo.'.'.$extension_firma;
								$this->data['User']['foto_firma'] = $NombreArchivo; 
								move_uploaded_file ($foto['tmp_name'], ROOT.DS.'app'.DS.'webroot'.DS.'uploads'.DS.$NombreArchivo);

								// Actualizo la Firma
								$this->User->saveField('foto_firma', $NombreArchivo);
							}
						}



					/*----------------------------------------------------------------------------*/
					/* Asigno los Roles al Usuario												  */
					/*----------------------------------------------------------------------------*/

						if(!empty($this->data['RolsUser']['rol_id'])){
							foreach($this->data['RolsUser']['rol_id'] AS $id_rol_aux){

								// Creo un Nuevo Registro
								$this->RolsUser->create();

								$this->RolsUser->set(array(
												'rol_id'    => $id_rol_aux,
												'user_id'   => $user_id_nuevo,
												'client_id' => $client_id,
											));
								// Grabo el nuevo Usuario
								$this->RolsUser->save();
								
							}
						}

					/*----------------------------------------------------------------------------*/
					/* Asigno las Especialidades al Usuario										  */
					/*----------------------------------------------------------------------------*/

						if(!empty($this->data['SpecialtiesUser']['specialty_id'])){
							foreach($this->data['SpecialtiesUser']['specialty_id'] AS $id_especialidad_aux){

								// Creo un Nuevo Registro
								$this->SpecialtiesUser->create();

								$this->SpecialtiesUser->set(array(
											'specialty_id' => $id_especialidad_aux,
											'user_id'      => $user_id_nuevo,
										));
								// Grabo el nuevo Usuario
								$this->SpecialtiesUser->save();
							}
						}


					
					/*----------------------------------------------------------------------------*/
					/* Pre-seteo el Financiador PARTICULAR										  */
					/*----------------------------------------------------------------------------*/
					$this->loadModel('InsurancesUser');
					$Insurances['id']           = 0;
					$Insurances['insurance_id'] = 478; // Particular
					$Insurances['plan']         = 'PARTICULAR';
					$Insurances['user_id']      = $user_id_nuevo;
					$Insurances['client_id']    = $client_id;
					$this->InsurancesUser->create();
					$this->InsurancesUser->save($Insurances);
					$insurancesuser_id = $this->InsurancesUser->id;

					/*----------------------------------------------------------------------------*/
					/* Pre-seteo el Producto CONSULTA       									  */
					/*----------------------------------------------------------------------------*/
					$this->loadModel('ProductsUsers');
					$ProductsUsers['id']         = 0;
					$ProductsUsers['product_id'] = 1; // Consulta
					$ProductsUsers['user_id']    = $user_id_nuevo;
					$ProductsUsers['client_id']  = $client_id;
					$this->ProductsUsers->create();
					$this->ProductsUsers->save($ProductsUsers);
					$productsusers_id = $this->ProductsUsers->id;

					/*----------------------------------------------------------------------------*/
					/* Pre-seteo la relacion  Insurances-Producto                                 */
					/*----------------------------------------------------------------------------*/
					$this->loadModel('InsurancesProduct');
					$InsurancesProduct['id']                = 0;
					$InsurancesProduct['insurance_user_id'] = $insurancesuser_id;
					$InsurancesProduct['product_id']        = 1; // Consulta
					$InsurancesProduct['user_id']           = $user_id_nuevo;
					$InsurancesProduct['client_id']         = $client_id;
					$InsurancesProduct['importe']           = 100;
					$InsurancesProduct['money_id']          = 1;
					$this->InsurancesProduct->create();
					$this->InsurancesProduct->save($InsurancesProduct);

					/*----------------------------------------------------------------------------*/
					/*                                           Le asigno la Sucursal al Usuario */
					/*----------------------------------------------------------------------------*/
					$this->loadModel('SucursalsUser');
					$su['id']          = 0;
					$su['sucursal_id'] = $sucursal_id;
					$su['user_id']     = $user_id_nuevo;
					$su['client_id']   = $client_id;
					$this->SucursalsUser->create();
					$this->SucursalsUser->save($su);


					/*----------------------------------------------------------------------------*/
					/*                            Le creo la Agenda por defecto para esa Sucursal */
					/*----------------------------------------------------------------------------*/
					$this->loadModel('Agenda');
					$ag['id']          = 0;
					$ag['client_id']   = $client_id;
					$ag['user_id']     = $user_id_nuevo;
					$ag['sucursal_id'] = $sucursal_id;
					$ag['nombre'] = $nombre_sucursal;
					$this->Agenda->create();
					$this->Agenda->save($ag);


					

					$this->ClientsUser->create();

					// Seteo datos que no vienen del Formulario
					$this->ClientsUser->set(array(
						'user_id' => $user_id_nuevo,
					));

					if ($this->ClientsUser->save($this->data)) {
						$this->Session->setFlash(__('El usuario ha sido cargado', true));

						// Limpio el Listado de Profesionales
						Cache::delete('profesionales_'.$this->Session->read('ClientesUsuarioLogueado.id'));

						$this->redirect('/clients/view/'.$this->Session->read('ClientesUsuarioLogueado.id').'/2');
						exit;
					} else {
						$this->Session->setFlash(__('El usuario no ha podido ser cargado. Por favor, intente nuevamente.', true));
					}

				}else{ // Si no se pudo grabar el nuevo usuario
					$this->Session->setFlash(__('El usuario seleccionado ya existe en el Sistema. Por favor, intente con uno diferente o contáctenos si desea utilizar múltiples clientes.', true));
				}
			}else{ // Si no está todo Validado
				$this->Session->setFlash(__('Verifique los datos ingresados...', true));
			}
		}

		//Cual es el plan del Cliente? para obtener los maximos posibles
		$this->loadModel('ClientsPlan','Plan');
		$x = $this->ClientsPlan->find('first', array(
						'conditions' => array(
										'ClientsPlan.client_id' => $this->Session->read('ClientesUsuarioLogueado.id'),
										'ClientsPlan.activo'    => 1,
						), 'recursive' => 1

						));

		$Plan = $x['Plan'];

		$Consumos = $this->Consumos();
		
		$roles = $this->Rol->find('list');
		if(($Consumos['cantidad_de_medicos']>=$Plan['maximo_medicos']) and $Plan['maximo_medicos']>0 ){
			unset($roles[4]);
		}

		if( ($Consumos['cantidad_de_otros_roles']>=$Plan['maximo_admin']) and $Plan['maximo_admin']>0 ){
			unset($roles[1]);
			unset($roles[2]);
		}



//		$roles = $this->Rol->find('list');
		$specialties = $this->Specialty->find('list');
		$countries = $this->Client->Country->find('list', array('order' => array('Country.name')));
		$typodocuments = $this->Person->Typodocument->find('list', array('order' => array('Typodocument.name')));
		$this->set('id_cliente', $this->Session->read('ClientesUsuarioLogueado.id'));
		$this->set(compact('roles','specialties','countries','typodocuments'));
		
		
		//-----------------------------------------------------------------------------
		//                                                    Tratamiento de la persona
		//-----------------------------------------------------------------------------
		//$Tratamiento = $this->_tratamiento();
		//$this->set('Tratamiento',$Tratamiento);	
		

	}

	function edit($id_user = null, $id_cliente = null) {
		$this->_accede('abm_usuarios');

		$asocia_productos_profesional = $this->_accede('asocia_productos_profesional','retorna');
		$this->set('asocia_productos_profesional',$asocia_productos_profesional);

		$asocia_financiador_profesional = $this->_accede('asocia_financiador_profesional','retorna');
		$this->set('asocia_financiador_profesional',$asocia_financiador_profesional);

		$carga_matriz_productos_financiadores = $this->_accede('carga_matriz_productos_financiadores','retorna');
		$this->set('carga_matriz_productos_financiadores',$carga_matriz_productos_financiadores);
		
		$this->User->recursive = -1;

		if (!$id_user && empty($this->data)) {
			$this->Session->setFlash(__('Usuario inválido', true));
			$this->redirect('/clients/view/'.$this->Session->read('ClientesUsuarioLogueado.id').'/2');
			exit;
		}
		if (!empty($this->data)) {
			//pr($this->data); die();

			$money_id = $this->data['moneda'];
			
			/*----------------------------------------------------------------------------*/
			/*                                           Hago el Upload de la Firma 	  */	
			/*----------------------------------------------------------------------------*/

				if(isset($_POST['eliminar_foto']) and $_POST['eliminar_foto']=='on'){
					$this->User->set(array(
						'foto_firma' => "",
					));
				} else {

					if(isset($this->data['User']['foto_firma'])){

						$foto = $this->data['User']['foto_firma'];
						
						if( $foto['size']>0){ 

							// Obtengo la Extension
							$posicion_punto = strrpos($foto['name'],".");
							$extension_firma = substr($foto['name'], 1 + $posicion_punto);

							$NombreArchivo = 'firma-'.$this->data['User']['id'].'.'.$extension_firma;
							$this->data['User']['foto_firma'] = $NombreArchivo; 
							move_uploaded_file ($foto['tmp_name'], ROOT.DS.'app'.DS.'webroot'.DS.'uploads'.DS.$NombreArchivo);

							$this->User->set(array(
								'foto_firma' => $NombreArchivo,
							));
						}
					}
				}

			/*----------------------------------------------------------------------------*/
			/*                                           Asigno las Insurances al Usuario */	
			/*                          Pestaña Financiador                               */
			/*----------------------------------------------------------------------------*/
				// Obtengo las que tiene registrada
				$insurances_user = $this->InsurancesUser->find('all', array(
								'conditions' => array(
													'InsurancesUser.client_id' => $this->Session->read('ClientesUsuarioLogueado.id'),
													'InsurancesUser.user_id'   => $this->data['User']['id'],
												)
								) );

				// ------------------- Comparo las que tenia con el nuevo array Si no existe mas en el array la borro de la tabla
				foreach($insurances_user as $iu){
					$insurance_user_id = $iu['InsurancesUser']['id'];
					$existe = false;
					if (!empty($this->data['Planes'])) {
						foreach($this->data['Planes'] as $clave=>$valor){
							if ($valor['insurancesuser_id'] == $insurance_user_id) {
								$existe = true;
								break;
							}	
						}
					}
					if (!$existe) {
						$this->InsurancesUser->delete($insurance_user_id);
						// Elimino tambien las asociaciones de insurances/product
						$this->InsurancesProduct->deleteAll(array(
														'InsurancesProduct.insurance_user_id' => $insurance_user_id,
														'InsurancesProduct.user_id'   => $this->data['User']['id'],
														'InsurancesProduct.client_id' => $this->Session->read('ClientesUsuarioLogueado.id'),
														)
													);

					}
				}

				
				$tiene_particular = false;
				foreach($this->data['Planes'] as $plan){
					if ($plan['os_id'] == 478 ){ $tiene_particular = true; }
					if ( substr($plan['insurancesuser_id'],0,2)=='n_' ) {
						// Creo un Nuevo Registro
						$this->InsurancesUser->create();
						$id = 0;		
						$this->InsurancesUser->set(array(
													'id' 	        => $id,
													'insurance_id' 	=> $plan['os_id'],
													'plan'			=> $plan['os_plan'],
													'user_id' 		=> $this->data['User']['id'],
													'client_id' 	=> $this->Session->read('ClientesUsuarioLogueado.id'),
													)
												);
						$this->InsurancesUser->save();
					} 
				}
				if (!$tiene_particular) {
					// Le hardcodeo el particular
					$this->InsurancesUser->create();
					$id = 0;		
					$this->InsurancesUser->set(array(
												'id' 	        => 0,
												'insurance_id' 	=> 478,
												'plan'			=> 'PARTICULAR',
												'user_id' 		=> $this->data['User']['id'],
												'client_id' 	=> $this->Session->read('ClientesUsuarioLogueado.id'),
												)
											);
					$this->InsurancesUser->save();
				}

			
			/*----------------------------------------------------------------------------*/
			/*                                            Asigno los Productos al Usuario */
			/*                          Pestaña Productos                                 */
			/*----------------------------------------------------------------------------*/
				// Obtengo las que tiene registrada
				$products_user = $this->ProductsUser->find('all', array(
										'conditions' => array(
													'ProductsUser.client_id' => $this->Session->read('ClientesUsuarioLogueado.id'),
													'ProductsUser.user_id'   => $this->data['User']['id'],
												)
								) );
				//pr($products_user); die();
				// ------------------- Comparo las que tenia con el nuevo array Si no existe mas en el array la borro de la tabla
				foreach($products_user as $pu){
					$product_id = $pu['ProductsUser']['product_id'];
					$existe = false;
					if (!empty($this->data['ProductsUser']['product_id'])){
						foreach($this->data['ProductsUser']['product_id'] as $valor){
							if ($valor == $product_id) {
								$existe = true;
								break;
							}	
						}
					}
					if (!$existe) {
						$this->ProductsUser->deleteAll(array(
														'ProductsUser.product_id' => $product_id,
														'ProductsUser.user_id'   => $this->data['User']['id'],
														'ProductsUser.client_id' => $this->Session->read('ClientesUsuarioLogueado.id'),
														)
													);
						// Elimino tambien las asociaciones de insurances/product
						$this->InsurancesProduct->deleteAll(array(
														'InsurancesProduct.product_id' => $product_id,
														'InsurancesProduct.user_id'    => $this->data['User']['id'],
														'InsurancesProduct.client_id'  => $this->Session->read('ClientesUsuarioLogueado.id'),
														)
													);
					}
				}


				foreach($this->data['ProductsUser']['product_id'] as $nuevo_producto){
					// Existe este producto en la tabla??
					$existe = $this->ProductsUser->find('first', array(
										'conditions' => array(
													'ProductsUser.product_id' => $nuevo_producto,
													'ProductsUser.client_id'  => $this->Session->read('ClientesUsuarioLogueado.id'),
													'ProductsUser.user_id'    => $this->data['User']['id'],
												)
								) );
					if (!$existe){
						// Creo un Nuevo Registro
						$this->ProductsUser->create();
						$this->ProductsUser->set(array(
													'product_id' 	=> $nuevo_producto,
													'user_id' 		=> $this->data['User']['id'],
													'client_id' 	=> $this->Session->read('ClientesUsuarioLogueado.id'),
													)
												);
						// Grabo el nuevo ProductoUsuario
						$this->ProductsUser->save();
					}
				} // end foreach


			/*----------------------------------------------------------------------------*/
			/*                                            Grilla de Insurances / Prodctos */
			/*----------------------------------------------------------------------------*/
//			pr($this->data['grilla']); die();
			
			$money_id = $this->data['moneda'];
			
			$this->InsurancesProduct->deleteAll(array(
										'InsurancesProduct.user_id'   => $this->data['User']['id'],
										'InsurancesProduct.client_id' => $this->Session->read('ClientesUsuarioLogueado.id'),
												)
											);
			if (!empty($this->data['grilla']))	{
				foreach($this->data['grilla'] as $key => $value){

					foreach($value as $grid){

						$existe_producto = $this->ProductsUser->find('first', array(
											'conditions' => array(
													'ProductsUser.product_id' => $grid['product_id'],
													'ProductsUser.client_id'  => $this->Session->read('ClientesUsuarioLogueado.id'),
													'ProductsUser.user_id'    => $this->data['User']['id'],
												)
								) );

						$existe_insurance_user = false;
						$existe_insurance_user = $this->InsurancesUser->read(null,$grid['insurance_user_id']);

						if ($existe_producto and $existe_insurance_user) {
							$this->InsurancesProduct->create();

							$this->InsurancesProduct->set(array(
														'product_id' 	    => $grid['product_id'],
														'insurance_user_id'	=> $grid['insurance_user_id'],
														'importe'	        => $grid['importe'],
														'money_id'          => $money_id,
														'user_id' 		    => $this->data['User']['id'],
														'client_id' 	    => $this->Session->read('ClientesUsuarioLogueado.id'),
														)
													);
							$this->InsurancesProduct->save();
						}

					}	

				} // end foreach
			} // end if	



			/*----------------------------------------------------------------------------*/
			/*                                                Asigno los Roles al Usuario */
			/*----------------------------------------------------------------------------*/

				// Borro todas las Relaciones Usuario / Roles
				$this->RolsUser->deleteAll(array('RolsUser.user_id' => $this->data['User']['id'],'RolsUser.client_id' => $this->Session->read('ClientesUsuarioLogueado.id'), ));

				if(!empty($this->data['Roles']['rol_id'])){
					foreach($this->data['Roles']['rol_id'] AS $id_rol_aux){

						// Creo un Nuevo Registro
						$this->RolsUser->create();

						$this->RolsUser->set(array(
							'rol_id' => $id_rol_aux,
							'user_id' => $this->data['User']['id'],
							'client_id' => $this->Session->read('ClientesUsuarioLogueado.id'),
						));
						// Grabo el nuevo Usuario
						$this->RolsUser->save();
					}
				}

			/*----------------------------------------------------------------------------*/
			/*                                        Asigno las Sucursales donde atiende */
			/*----------------------------------------------------------------------------*/

				// Borro todas las Relaciones Usuario / Sucursal
				$user_id   = $this->data['User']['id'];
				$client_id = $this->Session->read('ClientesUsuarioLogueado.id');
				
				$this->SucursalsUser->deleteAll(array('SucursalsUser.user_id' => $user_id,'SucursalsUser.client_id' => $client_id ));

				if(!empty($this->data['Sucursales']['sucursal_id'])){
					foreach($this->data['Sucursales']['sucursal_id'] AS $sucursal_id){

						// Creo un Nuevo Registro
						$this->SucursalsUser->create();

						$this->SucursalsUser->set(array(
								'sucursal_id' 	=> $sucursal_id,
								'user_id' 		=> $user_id,
								'client_id' 	=> $client_id,
								));
						$this->SucursalsUser->save();
					}
				}

			/*----------------------------------------------------------------------------*/
			/*                                       Asigno las Especialidades al Usuario */
			/*----------------------------------------------------------------------------*/

				// Borro todas las Especialidades Usuario / Especialidades
				$this->SpecialtiesUser->deleteAll(array('SpecialtiesUser.user_id' => $this->data['User']['id'] ));


				if(!empty($this->data['SpecialtiesUser']['specialty_id'])){
					foreach($this->data['SpecialtiesUser']['specialty_id'] AS $id_especialidad_aux){

						// Creo un Nuevo Registro
						$this->SpecialtiesUser->create();

						$this->SpecialtiesUser->set(array(
							'specialty_id' => $id_especialidad_aux,
							'user_id' => $this->data['User']['id'],
						));
						// Grabo el nuevo Usuario
						$this->SpecialtiesUser->save();
					}
				}

				
			/*----------------------------------------------------------------------------*/
			/*                                                                  Recetario */
			/*----------------------------------------------------------------------------*/
			$this->Recetario->set(array(
				'id'				=> $this->data['Recetario']['id'],
				'encabezado' 	    => $this->data['Recetario']['encabezado'],
				'pie' 				=> $this->data['Recetario']['pie'],
				'user_id'           => $this->data['User']['id'],
				'client_id'         => $this->Session->read('ClientesUsuarioLogueado.id')
			));
			$this->Recetario->save();
				
		
				
				
			/*----------------------------------------------------------------------------*/
			/*                              Si se definio una Nueva Contraseña, la cambio */
			/*----------------------------------------------------------------------------*/

				if(!empty($this->data['User']['nueva_contrasena'])){
						$this->User->set(array(
							'password' => Security::hash($this->data['User']['nueva_contrasena'], null, true)
						));
				}
			
			/*----------------------------------------------------------------------------*/

			$this->User->set(array(
				'id'				=> $this->data['User']['id'],
				'username' 			=> $this->data['User']['username'],
				'name' 				=> $this->data['User']['name'],
				'lastname' 			=> $this->data['User']['lastname'],
				'email' 			=> $this->data['User']['email'],
				'fecha_nacimiento' 	=> $this->data['User']['fecha_nacimiento'],
				'typodocument_id' 	=> $this->data['User']['typodocument_id'],
				'nro_documento' 	=> $this->data['User']['nro_documento'],
				'country_id' 		=> $this->data['User']['country_id'],
				'telefono' 			=> $this->data['User']['telefono'],
				'tratamiento' 		=> $this->data['User']['tratamiento'],
				'idioma' 			=> $this->data['User']['idioma'],
				'matricula' 		=> $this->data['User']['matricula'],
			));

			
			if ($this->User->save() ) {
				$this->Session->write('Auth.User.idioma',$this->data['User']['idioma']);
				$this->Session->setFlash(__('El Usuario ha sido modificado.<br/>Si los Roles fueron modificados, es recomendado cerrar la sesión y volver a ingresar.', true));
			} else {
				pr($this->User->validationErrors); die();
				$this->Session->setFlash(__('El Usuario no pudo ser modificado. Por favor, intente otra vez.', true));
			}

			$this->redirect('/clients/view/'.$this->Session->read('ClientesUsuarioLogueado.id').'/2');
			exit;

		} // end if !empty($this->data



		if($id_cliente != $this->Session->read('ClientesUsuarioLogueado.id')){
			exit;
		}

		if (empty($this->data)) {
			$this->data = $this->User->read(null, $id_user);
		}



		/******************************************************************************/
		/*                                                       Obtengo el Recetario */
		/******************************************************************************/
		$Recetario = $this->Recetario->find('first', array(
									'conditions' => array(
											'Recetario.client_id' => $this->Session->read('ClientesUsuarioLogueado.id'),
											'Recetario.user_id' => $id_user,
											)
									));
		if (!$Recetario) {
			$Recetario['Recetario']['encabezado'] = '';
			$Recetario['Recetario']['pie'] = '';
			$Recetario['Recetario']['id'] = 0;			
		}
		$this->set('Recetario', $Recetario);		


		/******************************************************************************/
		/*                                       Obtengo las sucursales donde trabaja */
		/******************************************************************************/
		$sucursales_usuario = $this->SucursalsUser->find('list', array(
						'conditions' => array(
											'SucursalsUser.client_id' => $this->Session->read('ClientesUsuarioLogueado.id'),
											'SucursalsUser.user_id' => $id_user,
										),
						'fields' => array('SucursalsUser.sucursal_id','SucursalsUser.sucursal_id')
		) );
		$Sucursales = $this->Sucursal->find('list', array(
						'conditions' => array(
											'Sucursal.client_id' => $this->Session->read('ClientesUsuarioLogueado.id')
										)
		) );

		$this->set('Sucursales', $Sucursales);		
		$this->set('sucursales_usuario', $sucursales_usuario);		

		
		/******************************************************************************/
		/*                                              Obtengo los Roles del Usuario */
		/******************************************************************************/
		$roles_usuario = $this->RolsUser->find('list', array(
						'conditions' => array(
											'RolsUser.client_id' => $this->Session->read('ClientesUsuarioLogueado.id'),
											'RolsUser.user_id' => $id_user,
										),
						'fields' => array('RolsUser.rol_id','RolsUser.rol_id')

		) );

		/******************************************************************************/
		/*                                     Obtengo las Especialidades del Usuario */
		/******************************************************************************/
		$especialidades_usuario = $this->SpecialtiesUser->find('list', array(
						'conditions' => array(
											'SpecialtiesUser.user_id' => $id_user,
										),
						'fields' => array('SpecialtiesUser.specialty_id','SpecialtiesUser.specialty_id')

		) );

		/******************************************************************************/
		/*            Obtengo las Obras Sociales con las que trabaja el Medico (User) */
		/******************************************************************************/		
		$insurances_user = $this->InsurancesUser->find('all', array(
						'conditions' => array(
											'InsurancesUser.client_id' => $this->Session->read('ClientesUsuarioLogueado.id'),
											'InsurancesUser.user_id'   => $id_user,
										),
						'order'		=> array('InsurancesUser.insurance_id' => 'ASC', 'InsurancesUser.plan' => 'ASC')

		) );
		$insurances_aux = $this->Insurance->find('all', array(
						'conditions' => array('Insurance.id !=' => '478'),
						'fields' => array('Insurance.id','Insurance.name','Insurance.short_name')
		));

		$insurances = array();
		foreach($insurances_aux AS $insurances_aux2){
			if($insurances_aux2['Insurance']['name'] != $insurances_aux2['Insurance']['short_name'] AND $insurances_aux2['Insurance']['short_name'] <> ""){
				$insurances[$insurances_aux2['Insurance']['id']] = $insurances_aux2['Insurance']['name']." ( ".$insurances_aux2['Insurance']['short_name']." )";
			}else{
				$insurances[$insurances_aux2['Insurance']['id']] = $insurances_aux2['Insurance']['name'];
			}
		}

		/******************************************************************************/
		/*                                                      Productos del Usuario */
		/******************************************************************************/		
		$products_user = $this->ProductsUser->find('list', array(
						'conditions' => array(
											'ProductsUser.user_id'   => $id_user,
										),
						'fields' => array('ProductsUser.product_id','ProductsUser.product_id')

		) );
		$products = $this->Product->find('list');


		/******************************************************************************/
		/*                                Obtengo la grilla Financiadores / Productos */
		/******************************************************************************/
		$financiadores = $this->InsurancesUser->find('all', array(
						'conditions' => array(
											'InsurancesUser.client_id' => $this->Session->read('ClientesUsuarioLogueado.id'),
											'InsurancesUser.user_id'   => $id_user,
										),
						'order'		=> array('InsurancesUser.insurance_id' => 'ASC', 'InsurancesUser.plan' => 'ASC')

		) );



		$productos = $this->ProductsUser->find('all', array(
						'conditions' => array(
											'ProductsUser.client_id' => $this->Session->read('ClientesUsuarioLogueado.id'),
											'ProductsUser.user_id'   => $id_user,
										)

		) );



		$grilla = array();
		$moneda_elegida = 0;
		if (!empty($financiadores) and !empty($productos)){
			$x=0;
			foreach ($financiadores as $f) {
				if ($f['InsurancesUser']['insurance_id'] == 0) {
					// Particular
					$grilla[$f['InsurancesUser']['id']]['insurance_user_id'] = $f['InsurancesUser']['id'];
					$grilla[$f['InsurancesUser']['id']]['insurance_id']      = 0;
					$grilla[$f['InsurancesUser']['id']]['name']              = 'Particular';
					$grilla[$f['InsurancesUser']['id']]['plan']              = '';
				} else {
					$grilla[$f['InsurancesUser']['id']]['insurance_user_id'] = $f['InsurancesUser']['id'];
					$grilla[$f['InsurancesUser']['id']]['insurance_id']      = $f['Insurance']['id'];
					$grilla[$f['InsurancesUser']['id']]['name']              = $f['Insurance']['short_name'];
					$grilla[$f['InsurancesUser']['id']]['plan']              = $f['InsurancesUser']['plan'];			
				}

				foreach($productos as $p){
					
					$grilla[$f['InsurancesUser']['id']]['productos'][$x]['product_id']  = $p['ProductsUser']['product_id'];				
					$grilla[$f['InsurancesUser']['id']]['productos'][$x]['name']        = $p['Product']['name'];

					$importe = $this->InsurancesProduct->find('first', array(
										'conditions' => array(
															'InsurancesProduct.insurance_user_id' => $f['InsurancesUser']['id'],
															'InsurancesProduct.product_id'        => $p['ProductsUser']['product_id'],
															'InsurancesProduct.client_id'         => $this->Session->read('ClientesUsuarioLogueado.id'),
															'InsurancesProduct.user_id'           => $id_user,
														)
						) );

					if ($importe){
						$grilla[$f['InsurancesUser']['id']]['productos'][$x]['importe'] = $importe['InsurancesProduct']['importe'];	
						$moneda_elegida = $importe['InsurancesProduct']['money_id'];
					} else {
						$grilla[$f['InsurancesUser']['id']]['productos'][$x]['importe'] = 0;
					}

					$x++;
				} // end foreach productos
				
				

			} // end foreach financiadores

		}
		$this->set('moneda_elegida', $moneda_elegida);

		/******************************************************************************/
		/*                                                            Tipos de Moneda */
		/******************************************************************************/
		$monedas = $this->Money->find('all');
		$this->set('Monedas', $monedas);		

//pr($grilla);

		$this->set('grilla', $grilla);
		$this->set('productos', $productos);
		//pr($grilla);

		//Cual es el plan del Cliente? para obtener los maximos posibles
		$this->loadModel('ClientsPlan','Plan');
		$x = $this->ClientsPlan->find('first', array(
						'conditions' => array(
										'ClientsPlan.client_id' => $this->Session->read('ClientesUsuarioLogueado.id'),
										'ClientsPlan.activo'    => 1,
						), 'recursive' => 1

						));

		$Plan = $x['Plan'];
//		pr($Plan);

		$Consumos = $this->Consumos();
//		pr($Consumos);
		
		$roles = $this->Rol->find('list');
		if( ($Consumos['cantidad_de_medicos']>=$Plan['maximo_medicos']) and  $Plan['maximo_medicos']>0 ){
			unset($roles[4]);
		}

		if( ($Consumos['cantidad_de_otros_roles']>=$Plan['maximo_admin']  ) and $Plan['maximo_admin']>0 ){
			unset($roles[1]);
			unset($roles[2]);
		}

//		pr($roles);
		$specialties = $this->Specialty->find('list');
		$countries = $this->Client->Country->find('list', array('order' => array('Country.name')));
		$typodocuments = $this->Person->Typodocument->find('list', array('order' => array('Typodocument.name')));
		$this->set('id_cliente', $this->Session->read('ClientesUsuarioLogueado.id'));
		$this->set('id_user', $id_user);
		$this->set(compact('roles','roles_usuario','specialties','especialidades_usuario','countries','typodocuments','insurances','insurances_user','products','products_user'));
		
		//-----------------------------------------------------------------------------
		//                                                    Tratamiento de la persona
		//-----------------------------------------------------------------------------
		//$Tratamiento = $this->_tratamiento();
		//$this->set('Tratamiento',$Tratamiento);	
	
		$Idiomas['es_ES'] = 'Español - Argentina';
		$Idiomas['es_CL'] = 'Español - Chile';
		$Idiomas['en_US'] = 'Inglés - EEUU';
		$this->set('Idiomas',$Idiomas);
	
	}





	function Consumos(){
	
		$client_id = $this->Session->read('ClientesUsuarioLogueado.id'); // $_SESSION['Client']['id'];

		
		// ----------------------------------------------------------------------------------
		//                        La cantidad de Pacientes supera las permitidas por el Plan? 
		// ----------------------------------------------------------------------------------
		$this->loadModel('ClientsPerson');
		$sql = "select count(clients_people.id) as cuantos 
			from clients_people 
			left join people on people.id = clients_people.person_id
			where client_id='$client_id' and people.stateperson_id='1'";

		$x = $this->ClientsPerson->query($sql);
		$consumos['pacientes_actuales'] = $x[0][0]['cuantos'];
		
		
		// ----------------------------------------------------------------------------------
		//                                        La cantidad de Medicos supera los del Plan? 
		//                                   Si $Plan['Plan']['maximo_medicos']=0 : ilimitado
		// ----------------------------------------------------------------------------------
			$rol_medico = 4; // id del rol de medico en rols
			$this->loadModel('RolsUser');
			$rols = $this->RolsUser->find('all', array(
										      'conditions' => array(
														           'RolsUser.client_id' => $this->Session->read('ClientesUsuarioLogueado.id'),
														           'RolsUser.rol_id'    => $rol_medico
		   															)
			  											) 
			  							);
			//pr($rols); die();
			if ($rols){
				$this->loadModel('ClientsUser');
				foreach($rols as $clave=>$valor) {

					$user_id = $valor['RolsUser']['user_id'];

					$ClientUser = $this->ClientsUser->find('first', array(
																'conditions' => array(
																			'ClientsUser.client_id' => $this->Session->read('ClientesUsuarioLogueado.id'),
																			'ClientsUser.user_id'   => $user_id,
																			), 
																'recursive' => -1
																)
														);
					if ( isset($ClientUser) and $ClientUser['ClientsUser']['staterecord_id'] > 1 ){

						unset($rols[$clave]);

					}

				}

			}

			$consumos['cantidad_de_medicos'] = count($rols);

		// ----------------------------------------------------------------------------------
		//         La cantidad de administrativos/asistentes/secretarias supera los del Plan? 
		//                                     Si $Plan['Plan']['maximo_admin']=0 : ilimitado
		// ----------------------------------------------------------------------------------

			$rol_medico = 4; // id del rol de medico en rols

			$this->loadModel('RolsUser');
			$rols = $this->RolsUser->find('all', array(
										      'conditions' 	=> array(
														           'RolsUser.client_id' => $this->Session->read('ClientesUsuarioLogueado.id'),
														           'RolsUser.rol_id !='    => $rol_medico
		   															),
										      'group' 		=> array('RolsUser.user_id'), 
			  											) 
			  							);
//			pr($rols); 
			if ($rols){
				$this->loadModel('ClientsUser');
				foreach($rols as $clave=>$valor) {

					$user_id = $valor['RolsUser']['user_id'];

					$ClientUser = $this->ClientsUser->find('first', array(
																'conditions' => array(
																			'ClientsUser.client_id' => $this->Session->read('ClientesUsuarioLogueado.id'),
																			'ClientsUser.user_id'   => $user_id,
																			), 
																'recursive' => -1
																)
														);
					if ( isset($ClientUser) and $ClientUser['ClientsUser']['staterecord_id'] > 1 ){
//						pr($rols[$clave]);
						unset($rols[$clave]);

					}

				}

			}
//			pr($rols); die();
			$consumos['cantidad_de_otros_roles'] = count($rols);

		return($consumos);	
	}
	























	function archivar($id = null, $estado = null) {
		if (!$id) {
			$this->Session->setFlash(__('Usuario no válido', true));
			$this->redirect('/dashboards');
		}

		if (!$estado) {
			$this->Session->setFlash(__('Estado no válido', true));
			$this->redirect('/dashboards');
		}

		$this->ClientsUser->id = $id;
		$this->ClientsUser->set(array(
			'staterecord_id' =>  $estado,
		));

		if ($this->ClientsUser->save()) {
			$this->Session->setFlash(__('El Usuario fue procesado.', true));
			$this->redirect('/clients/view/'.$this->Session->read('ClientesUsuarioLogueado.id').'/2');
		}
		$this->Session->setFlash(__('El Usuario no pudo ser procesado', true));
		$this->redirect('/clients/view/'.$this->Session->read('ClientesUsuarioLogueado.id').'/2');
	}

}
?>